package ar.edu.utn.frsf.tpae.a2013.g04.presentation.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;

import ar.edu.utn.frsf.tpae.a2013.g04.persistence.model.Empleado;
import ar.edu.utn.frsf.tpae.a2013.g04.persistence.model.SolicitudGasto;
import ar.edu.utn.frsf.tpae.a2013.g04.presentation.util.ServiceLocator;

@ManagedBean(name="consultarSolicitudesBean")
@SessionScoped
public class ConsultarSolicitudesBean implements Serializable {

	private static final long serialVersionUID = 6889313967412947212L;
	@ManagedProperty(value="#{usuarioBean.user}")
	private Empleado empleado;

	private Map<Integer,SolicitudGasto> solmap;
	
	private SolicitudGasto solSelected;
	
	public String darAlta(Integer idSolicitud){
		this.setSolSelected(solmap.get(idSolicitud));
		return "navigateToAltaGasto";
	}
	
	public List<SolicitudGasto> getListarSolicitudesAprobadas(){
		return getListarSolicitudes(SolicitudGasto.APROBADA);
	}
	
	public List<SolicitudGasto> getListarSolicitudesRechazadas(){
		return getListarSolicitudes(SolicitudGasto.RECHAZADA);
	}
	public List<SolicitudGasto> getListarSolicitudesPendientes(){
		return getListarSolicitudes(SolicitudGasto.PENDIENTE);
	}
	
	public List<SolicitudGasto> getListarSolicitudes(String estadoSol) {
		try{
			solmap = new HashMap<Integer, SolicitudGasto>();
			List<SolicitudGasto> ret = new ArrayList<SolicitudGasto>();
			List<SolicitudGasto> sollist = ServiceLocator.getSolicitudGastoService()
					.listarSolicitudesEmpleado(empleado);

			for(SolicitudGasto q:sollist){
				if(SolicitudGasto.APROBADA.equals(q.getEstado()))
					solmap.put(q.getId(),q);
				if(q.getEstado().equals(estadoSol))
					ret.add(q);
			}
			return ret;

		}
		catch(RuntimeException e){
			System.out.println("falla listarSolicitudesAprobadas");
			System.out.println(empleado.getApellido());

		}
		return null;
	}

	public Empleado getEmpleado() {
		return empleado;
	}

	public void setEmpleado(Empleado empleado) {
		this.empleado = empleado;
	}

	public SolicitudGasto getSolSelected() {
		return solSelected;
	}

	public void setSolSelected(SolicitudGasto solSelected) {
		this.solSelected = solSelected;
	}
	
}
